我們可以在ModLootTable裡面設定各個方塊的掉落物JSON檔生成,我們在ModLootTable中這樣寫
public class ModLootTableProvider extends FabricBlockLootTableProvider {
public ModLootTableProvider(FabricDataOutput dataOutput) {
super(dataOutput);
}
@Override
public void generate() {
addDrop(ModBlocks.SIDERITE_BLOCK);
addDrop(ModBlocks.KUNLUN_STONE);
}
}
我們Override generate方法,這個方法用於生成戰利品表。
addDrop用於一般被破壞後會掉落自身的方塊,只要使用addDrop就可以自動生成JSON檔,超方便
接下來我們到ModBlockTagProvider上,我們這樣寫
public class ModBlockTagProvider extends FabricTagProvider.BlockTagProvider {
public ModBlockTagProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture);
}
@Override
protected void configure(RegistryWrapper.WrapperLookup arg) {
getOrCreateTagBuilder(BlockTags.PICKAXE_MINEABLE)
.add(ModBlocks.SIDERITE_BLOCK);
getOrCreateTagBuilder(BlockTags.NEEDS_IRON_TOOL)
.add(ModBlocks.SIDERITE_BLOCK)
.add(ModBlocks.KUNLUN_STONE);
}
}
BlockTag可以將方塊貼上各式的標籤來讓遊戲知道這個方塊的類型以及在遊戲中的某些互動要怎麼安排,例如這個方塊的最低挖掘等級以及使用那些工具才能正確挖掘。
getOrCreateTagBuilder(BlockTags.PICKAXE_MINEABLE)
.add(ModBlocks.SIDERITE_BLOCK);
PICKAXE_MINEABLE代表玩家應該使用十字稿來破壞方塊,這裡我們添加SIDERITE就好
getOrCreateTagBuilder(BlockTags.NEEDS_IRON_TOOL)
.add(ModBlocks.SIDERITE_BLOCK)
.add(ModBlocks.KUNLUN_STONE);
NEEDS_IRON_TOOL代表破壞這個方塊最低需要鐵製工具,我們使用.add添加了兩個方塊
感冒還沒好,先講到這裡